package com.ruoyi.business.approvalflow.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 退款审批流程对象 t_register_approval_flow
 *
 * @author Tellsea
 * @date 2025-06-22
 */
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
public class TRegisterApprovalFlow {

    /**
     * 审批ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    @JsonSerialize(using= ToStringSerializer.class)
    private Long approvalId;

    /**
     * 关联的流程id
     */
    @Excel(name = "关联的流程id")
    private String processId;

    /**
     * 业务流程ID：关联退款申请ID,或者其他需要审批的id
     */
    @Excel(name = "业务ID：关联退款申请ID,或者其他需要审批的id")
    private String businessId;

    /**
     * 进修报名id
     */
    private Long registerId;

    /**
     * 审批级别(1-N)
     */
    @Excel(name = "审批级别(1-N)")
    private Integer approvalLevel;

    /**
     * 审批人ID
     */
    @Excel(name = "审批人ID")
    private String approverId;

    /**
     * 审批人姓名
     */
    @Excel(name = "审批人姓名")
    private String approverName;

    /**
     * 审批人角色
     */
    @Excel(name = "审批人角色")
    private String approverRole;

    /**
     * 审批状态: 0-待审批, 1-已通过, 2-已拒绝
     */
    @Excel(name = "审批状态: 0-待审批, 1-已通过, 2-已拒绝")
    private Integer status;

    /**
     * 审批意见
     */
    @Excel(name = "审批意见")
    private String approvalOpinion;

    /**
     * 审批时间
     */
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy/MM/dd HH:mm:ss")
    private Date approvalTime;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

}
